home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / bits / fcntl.h < prev    next >
C/C++ Source or Header  |  2006-05-08  |  7KB  |  190 lines

  1. /* O_*, F_*, FD_* bit values for Linux.
  2.    Copyright (C) 1995, 1996, 1997, 1998, 2000, 2004
  3.    Free Software Foundation, Inc.
  4.    This file is part of the GNU C Library.
  5.  
  6.    The GNU C Library is free software; you can redistribute it and/or
  7.    modify it under the terms of the GNU Lesser General Public
  8.    License as published by the Free Software Foundation; either
  9.    version 2.1 of the License, or (at your option) any later version.
  10.  
  11.    The GNU C Library is distributed in the hope that it will be useful,
  12.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.    Lesser General Public License for more details.
  15.  
  16.    You should have received a copy of the GNU Lesser General Public
  17.    License along with the GNU C Library; if not, write to the Free
  18.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  19.    02111-1307 USA.  */
  20.  
  21. #ifndef    _FCNTL_H
  22. # error "Never use <bits/fcntl.h> directly; include <fcntl.h> instead."
  23. #endif
  24.  
  25.  
  26. #include <sys/types.h>
  27.  
  28. /* open/fcntl - O_SYNC is only implemented on blocks devices and on files
  29.    located on an ext2 file system */
  30. #define O_ACCMODE       0003
  31. #define O_RDONLY         00
  32. #define O_WRONLY         01
  33. #define O_RDWR             02
  34. #define O_CREAT           0100    /* not fcntl */
  35. #define O_EXCL           0200    /* not fcntl */
  36. #define O_NOCTTY       0400    /* not fcntl */
  37. #define O_TRUNC          01000    /* not fcntl */
  38. #define O_APPEND      02000
  39. #define O_NONBLOCK      04000
  40. #define O_NDELAY    O_NONBLOCK
  41. #define O_SYNC         010000
  42. #define O_FSYNC         O_SYNC
  43. #define O_ASYNC         020000
  44.  
  45. #ifdef __USE_GNU
  46. # define O_DIRECT     040000    /* Direct disk access.    */
  47. # define O_DIRECTORY    0200000    /* Must be a directory.     */
  48. # define O_NOFOLLOW    0400000    /* Do not follow links.     */
  49. # define O_NOATIME     01000000 /* Do not set atime.  */
  50. #endif
  51.  
  52. /* For now Linux has synchronisity options for data and read operations.
  53.    We define the symbols here but let them do the same as O_SYNC since
  54.    this is a superset.    */
  55. #if defined __USE_POSIX199309 || defined __USE_UNIX98
  56. # define O_DSYNC    O_SYNC    /* Synchronize data.  */
  57. # define O_RSYNC    O_SYNC    /* Synchronize read operations.     */
  58. #endif
  59.  
  60. #ifdef __USE_LARGEFILE64
  61. # define O_LARGEFILE    0100000
  62. #endif
  63.  
  64. /* Values for the second argument to `fcntl'.  */
  65. #define F_DUPFD        0    /* Duplicate file descriptor.  */
  66. #define F_GETFD        1    /* Get file descriptor flags.  */
  67. #define F_SETFD        2    /* Set file descriptor flags.  */
  68. #define F_GETFL        3    /* Get file status flags.  */
  69. #define F_SETFL        4    /* Set file status flags.  */
  70. #ifndef __USE_FILE_OFFSET64
  71. # define F_GETLK    5    /* Get record locking info.  */
  72. # define F_SETLK    6    /* Set record locking info (non-blocking).  */
  73. # define F_SETLKW    7    /* Set record locking info (blocking).    */
  74. #else
  75. # define F_GETLK    F_GETLK64  /* Get record locking info.    */
  76. # define F_SETLK    F_SETLK64  /* Set record locking info (non-blocking).*/
  77. # define F_SETLKW    F_SETLKW64 /* Set record locking info (blocking).  */
  78. #endif
  79. #define F_GETLK64    12    /* Get record locking info.  */
  80. #define F_SETLK64    13    /* Set record locking info (non-blocking).  */
  81. #define F_SETLKW64    14    /* Set record locking info (blocking).    */
  82.  
  83. #if defined __USE_BSD || defined __USE_UNIX98
  84. # define F_SETOWN    8    /* Get owner of socket (receiver of SIGIO).  */
  85. # define F_GETOWN    9    /* Set owner of socket (receiver of SIGIO).  */
  86. #endif
  87.  
  88. #ifdef __USE_GNU
  89. # define F_SETSIG    10    /* Set number of signal to be sent.  */
  90. # define F_GETSIG    11    /* Get number of signal to be sent.  */
  91. #endif
  92.  
  93. #ifdef __USE_GNU
  94. # define F_SETLEASE    1024    /* Set a lease.     */
  95. # define F_GETLEASE    1025    /* Enquire what lease is active.  */
  96. # define F_NOTIFY    1026    /* Request notfications on a directory.     */
  97. #endif
  98.  
  99. /* For F_[GET|SET]FL.  */
  100. #define FD_CLOEXEC    1    /* actually anything with low bit set goes */
  101.  
  102. /* For posix fcntl() and `l_type' field of a `struct flock' for lockf().  */
  103. #define F_RDLCK        0    /* Read lock.  */
  104. #define F_WRLCK        1    /* Write lock.    */
  105. #define F_UNLCK        2    /* Remove lock.     */
  106.  
  107. /* For old implementation of bsd flock().  */
  108. #define F_EXLCK        4    /* or 3 */
  109. #define F_SHLCK        8    /* or 4 */
  110.  
  111. #ifdef __USE_BSD
  112. /* Operations for bsd flock(), also used by the kernel implementation.    */
  113. # define LOCK_SH    1    /* shared lock */
  114. # define LOCK_EX    2    /* exclusive lock */
  115. # define LOCK_NB    4    /* or'd with one of the above to prevent
  116.                    blocking */
  117. # define LOCK_UN    8    /* remove lock */
  118. #endif
  119.  
  120. #ifdef __USE_GNU
  121. # define LOCK_MAND    32    /* This is a mandatory flock:    */
  122. # define LOCK_READ    64    /* ... which allows concurrent read operations.     */
  123. # define LOCK_WRITE    128    /* ... which allows concurrent write operations.  */
  124. # define LOCK_RW    192    /* ... Which allows concurrent read & write operations.     */
  125. #endif
  126.  
  127. #ifdef __USE_GNU
  128. /* Types of directory notifications that may be requested with F_NOTIFY.  */
  129. # define DN_ACCESS    0x00000001    /* File accessed.  */
  130. # define DN_MODIFY    0x00000002    /* File modified.  */
  131. # define DN_CREATE    0x00000004    /* File created.  */
  132. # define DN_DELETE    0x00000008    /* File removed.  */
  133. # define DN_RENAME    0x00000010    /* File renamed.  */
  134. # define DN_ATTRIB    0x00000020    /* File changed attibutes.  */
  135. # define DN_MULTISHOT    0x80000000    /* Don't remove notifier.  */
  136. #endif
  137.  
  138. struct flock
  139.   {
  140.     short int l_type;    /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.    */
  141.     short int l_whence;    /* Where `l_start' is relative to (like `lseek').  */
  142. #ifndef __USE_FILE_OFFSET64
  143.     __off_t l_start;    /* Offset where the lock begins.  */
  144.     __off_t l_len;    /* Size of the locked area; zero means until EOF.  */
  145. #else
  146.     __off64_t l_start;    /* Offset where the lock begins.  */
  147.     __off64_t l_len;    /* Size of the locked area; zero means until EOF.  */
  148. #endif
  149.     __pid_t l_pid;    /* Process holding the lock.  */
  150.   };
  151.  
  152. #ifdef __USE_LARGEFILE64
  153. struct flock64
  154.   {
  155.     short int l_type;    /* Type of lock: F_RDLCK, F_WRLCK, or F_UNLCK.    */
  156.     short int l_whence;    /* Where `l_start' is relative to (like `lseek').  */
  157.     __off64_t l_start;    /* Offset where the lock begins.  */
  158.     __off64_t l_len;    /* Size of the locked area; zero means until EOF.  */
  159.     __pid_t l_pid;    /* Process holding the lock.  */
  160.   };
  161. #endif
  162.  
  163. /* Define some more compatibility macros to be backward compatible with
  164.    BSD systems which did not managed to hide these kernel macros.  */
  165. #ifdef    __USE_BSD
  166. # define FAPPEND    O_APPEND
  167. # define FFSYNC        O_FSYNC
  168. # define FASYNC        O_ASYNC
  169. # define FNONBLOCK    O_NONBLOCK
  170. # define FNDELAY    O_NDELAY
  171. #endif /* Use BSD.  */
  172.  
  173. /* Advise to `posix_fadvise'.  */
  174. #ifdef __USE_XOPEN2K
  175. # define POSIX_FADV_NORMAL    0 /* No further special treatment.  */
  176. # define POSIX_FADV_RANDOM    1 /* Expect random page references.  */
  177. # define POSIX_FADV_SEQUENTIAL    2 /* Expect sequential page references.     */
  178. # define POSIX_FADV_WILLNEED    3 /* Will need these pages.  */
  179. # define POSIX_FADV_DONTNEED    4 /* Don't need these pages.  */
  180. # define POSIX_FADV_NOREUSE    5 /* Data will be accessed once.  */
  181. #endif
  182.  
  183. __BEGIN_DECLS
  184.  
  185. /* Provide kernel hint to read ahead.  */
  186. extern ssize_t readahead (int __fd, __off64_t __offset, size_t __count)
  187.     __THROW;
  188.  
  189. __END_DECLS
  190.